home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 21 / AACD 21.iso / AACD / Graphics / SMan / WarpOS / Source / UseLib.c < prev   
Encoding:
C/C++ Source or Header  |  2001-03-28  |  2.0 KB  |  94 lines

  1. #include    <clib/all_protos.h>
  2. #include    <exec/types.h>
  3. #include    <math.h>
  4. #include    <float.h>
  5.  
  6. extern double TwoPi,Limit,PiD2,XCenter,YCenter,Factor,Two,PowerN,Pi;
  7. extern double PowerF;
  8. extern SHORT Power;
  9. extern UWORD Color;
  10. extern LONG xtemp,ytemp,RightEdge,MaxCnt;
  11. extern ULONG *ColorTable32,*LPixelBuf;
  12. extern int BPP;
  13.  
  14. extern void PlotIt(void);
  15.  
  16. void UseLib(double);
  17.  
  18. void UseLib(double yRel)
  19. {
  20. double    Zr4,Zr6,Zi6,xRel,Zr,Zi,Zr2,Zi2,Z2,Zr3,Zi3;
  21. ULONG *ColSrc;
  22. int CurCnt;
  23.     xRel = xtemp;
  24.     xRel = xRel - XCenter;
  25.     Zr = xRel/Factor;
  26.     Zi = yRel;
  27.     xRel = Zr;
  28.     CurCnt = 1;            /* Initialize Counter */
  29.     while (CurCnt < MaxCnt)    {
  30.         Zr2 = Zr*Zr;    /* Find Zr^2 */
  31.         Zi2 = Zi*Zi;    /* Find Zi^2 */
  32.         Z2 = Zr2+Zi2;        /* Find Zr^2 + Zi^2 */
  33.         if (Z2 > Limit)    {    /* is |Z| > 2*Factor */
  34.             if (BPP == 4) {
  35.                 ColSrc = (ULONG *)ColorTable32 + (ULONG)CurCnt;
  36.                 *LPixelBuf++ = *ColSrc;
  37.                 }
  38.             else    {
  39.                 Color = CurCnt;
  40.                 PlotIt();
  41.                 }
  42.             return;
  43.             }
  44.         if (Power == 2)    {
  45.             Zi = Two*Zi*Zr;        /* Find original Zi * Zr */
  46.             Zr2 = Zr2 - Zi2;    /* Find Zr^2 - Zi^2 */
  47.             }
  48.         if (Power == 3)    {
  49.             Zr3 = Zr*(Zr2 - 3*Zi2);
  50.             Zi = Zi*(3*Zr2 - Zi2);
  51.             Zr2 = Zr3;        /* Divide by Factor to get part of new Zr */
  52.             }
  53.         if (Power == 4)    {
  54.             Zr4 = (Zr2 - Zi2)*(Zr2 - Zi2) - 4*Zr2*Zi2;
  55.             Zi = 4*(Zr2 - Zi2)*Zi*Zr;
  56.             Zr2 = Zr4;
  57.             }
  58.         if (Power == 5)    {
  59.             Zr3 = Zr*(Zr2 - 3*Zi2)*(Zr2 - Zi2) + 2*Zi2*Zr*(Zi2 - 3*Zr2);
  60.             Zi = 2*Zi*Zr2*(Zr2 - 3*Zi2) - Zi*(Zi2 - 3*Zr2)*(Zr2 - Zi2);
  61.             Zr2 = Zr3;
  62.             }
  63.         if (Power == 6)    {
  64.             Zr3 = Zr*(Zr2 - 3*Zi2);
  65.             Zi3 = Zi*(3*Zr2 - Zi2);
  66.             Zr6 = Zr3*Zr3 - Zi3*Zi3;
  67.             Zi6 = 2*Zr3*Zi3;
  68.             Zr2 = Zr6;
  69.             Zi = Zi6;
  70.             }
  71.         if (Power == 7)    {
  72.             Zr3 = Zr*(Zr2 - 3*Zi2);
  73.             Zi3 = Zi*(3*Zr2 - Zi2);
  74.             Zr6 = Zr3*Zr3 - Zi3*Zi3;
  75.             Zi6 = 2*Zr3*Zi3;
  76.             Zr2 = Zr6*Zr - Zi6*Zi;
  77.             Zi = Zr6*Zi+Zi6*Zr;
  78.             }
  79.         Zr = xRel + Zr2;    /* Find New Zr */
  80.         Zi = yRel + Zi;     /*Add in original Zi to get new Zi */
  81.         CurCnt++;
  82.         }
  83.     if (BPP == 4) {
  84.             ColSrc = (ULONG *)ColorTable32 + 0xffff;
  85.             *LPixelBuf++ = *ColSrc;
  86.             }
  87.         else    {
  88.             Color = 0xffff;
  89.             PlotIt();
  90.             }
  91.     return;
  92. }
  93.  
  94.